/**
 *  Module
 *
 * Description
 */
angular.module('webpageApp', ['ngDialog'])
	.controller('webDocument', ['$scope', '$sce', 'Socket', '$compile', '$timeout',
		'ngDialog', 'templateHelper',
		function(
			$scope, $sce,
			socket, $compile, $timeout, ngDialog, templateHelper) {
			// $scope.getUrl = function(newUrl) {
			//
			// 	socket.emit('new url', {
			// 		url: newUrl
			// 	});
			//
			// 	// socket.on('new webpage', function(data){
			// 	// 	console.log('在这里');
			// 	// 	console.log(data);
			// 	// 	$scope.url = $sce.trustAsResourceUrl(data.url);
			// 	// });
			// };

			$scope.mode = true;
			$scope.chooseMore = function() {
				$scope.mode = !$scope.mode;
			};
			// $scope.setMode('more');

			// 用于存放自增的id
			// var ruleId = 0;
			// 用于存放当前规则
			$scope.current = {};
			// 用于存放整套规则
			$scope.set = {
				// _id: ruleId,
				name: '模板',
				children: []
			};
			// ruleId++;

			// 从某个父元素中删除某规则
			$scope.remove = function(parent, index) {
				// var dialog = ngDialog.openConfirm({
				// 	template: '<h2>删除字段</h2>\
				// 		<p>是否确认删除该字段？</p>\
				// 		<button class="btn btn-danger" ng-click="confirm(1)">删除</button>\
				// 		<button class="btn btn-default" ng-click="closeThisDialog(0)">取消</button>',
				// 	plain: true
				// });
				// dialog.then(function(res) {
				// 	console.log(res, 'res');
				// 	if (res == 1) {
				parent.children.splice(index, 1);
				// 	}
				// }, function(rea) {
				// 	console.log('cancel');
				// });
				// parent.children.splice(index, 1);
			};

			// 选择当前规则
			$scope.choose = function(rule) {
				$scope.current = rule;
				// console.log(rule, 'choose');
			};

			// 保存规则
			// $scope.save = function(rule) {
			// 	// $scope.chosen = rule;
			// };

			// 添加规则
			$scope.add = function(parent, e) {
				e.stopPropagation();
				$scope.init();
				// if (parent == null) {
				// 	parent = $scope.ruleList;
				// }
				console.log(parent, 'parent');
				parent.children.push($scope.current);
				// console.log($scope.current, 'add');
				// console.log($scope.ruleList);
			};

			$scope.init = function() {
				// var id = getId($scope.setList[$scope.setIndex].ruleList);
				// $scope.current._id = ruleId;
				// $scope.current.name = '字段' + ruleId;
				// $scope.current.list = [];
				// ruleId++;
				$scope.current = {
					// _id: ruleId,
					name: '新字段',
					children: []
				};
				// ruleId++;
			};

			$scope.clear = function(field) {
				$scope.current[field] = '';
			};

			// $scope.add($scope.set, null);

			$scope.set1 = {
				// _id: 1,
				path: '',
				name: '模板1',
				children: [{
					// _id: 2,
					path: '',
					name: '内容集合',
					children: [{
						// _id: 4,
						path: '',
						name: '标题',
						children: [{
							// _id: 4,
							path: '',
							name: '标题1',
							children: []
						}, {
							// _id: 4,
							path: '',
							name: '标题2',
							children: []
						}, {
							// _id: 4,
							path: '',
							name: '标题3',
							children: []
						}]
					}, {
						// _id: 5,
						path: '',
						name: '作者',
						children: []
					}, {
						// _id: 6,
						path: '',
						name: '摘要',
						children: []
					}]
				}, {
					// _id: 3,
					path: '',
					name: '结果集合',
					children: [{
						// _id: 7,
						path: '',
						name: '结果数',
						children: []
					}]
				}]
			};

			$scope.$watch('chooseSet', function(v) {
				if (v) {
					$scope.set = angular.copy(v);
					$compile(angular.element('div.recursion'))($scope);
				}
			});

			// $scope.$watch('set.absurl', function(v) {
			// 	console.log(v, 'webDocument');
			// })

			$scope.preview = function(set, url) {
				// console.log(set, 'set');
				// console.log($scope.absurl, 'saveurl');
				templateHelper.preview(set, url).then(function(res) {
					// console.log(res, 'success');
					console.log(res, 's');
					$scope.res = res;
					if (res.data.success) {
						var dialog = ngDialog.open({
							template: '<h2>预览结果</h2>\
							<p>\
								{{res.data.result}}\
							</p>',
							plain: true,
							scope: $scope
						});
					}
				});
			};

			$scope.$watch('current.path', function(v) {
				if (v) {
					$scope.savingMessages = true;
					$timeout(function() {
						$scope.savingMessages = false;
					}, 2000);
				}
			});

			// $scope.set = $scope.set1;
			// 存放规则的集合
			// $scope.setList[setIndex].ruleList = [];
			// var ruleId = 0,
			// 	setId = 0;
			// $scope.current = {};
			// $scope.setIndex;
			// $scope.setList = [];
			// // 删除某一条规则
			// $scope.remove = function(index) {
			// 	// console.log(id, 'id');
			// 	$scope.setList[$scope.setIndex].ruleList.splice(index, 1);
			// };
			// // 保存规则
			// $scope.save = function(rule) {
			// 	if ($scope.isNew) {
			// 		$scope.add(angular.copy(rule));
			// 	} else {
			// 		$scope.update(angular.copy(rule));
			// 	}
			// };
			// // 增加规则
			// $scope.add = function(rule) {
			// 	// if (!$scope.path) {
			// 	// 	$scope.errMessage = '请先选择元素';
			// 	// 	return;
			// 	// }
			// 	// var id = getId();
			// 	// $scope.setList[setIndex].ruleList.push({
			// 	// 	_id: id,
			// 	// 	name: $scope.fieldName || '字段' + id,
			// 	// 	path: $scope.path
			// 	// });
			// 	$scope.setList[$scope.setIndex].ruleList.push(rule);
			// 	$scope.isNew = false;
			// 	ruleId++;
			// 	// $scope.path = '';
			// };
			// // 修改规则
			// $scope.update = function(rule) {
			// 	var i = findIndexById($scope.setList[$scope.setIndex].ruleList, rule._id);
			// 	$scope.setList[$scope.setIndex].ruleList[i] = angular.copy(rule);
			// };
			// // 重置规则
			// $scope.reset = function() {
			// 	var i = findIndexById($scope.setList[$scope.setIndex].ruleList, $scope.current
			// 		._id);
			// 	$scope.current = angular.copy($scope.setList[$scope.setIndex].ruleList[i]);
			// };
			// // 选择规则
			// $scope.choose = function(index) {
			// 	$scope.current = angular.copy($scope.setList[$scope.setIndex].ruleList[
			// 		index]);
			// 	$scope.isNew = false;
			// };
			// // 对每一条规则初始化
			// $scope.init = function() {
			// 	// var id = getId($scope.setList[$scope.setIndex].ruleList);
			// 	$scope.current._id = ruleId;
			// 	$scope.current.name = '字段' + ruleId;
			// };
			// $scope.$watch('isNew', function(v) {
			// 	if (v) {
			// 		$scope.init();
			// 	}
			// });
			//
			// // 新增集合
			// $scope.addSet = function() {
			// 	// var id = getId($scope.setList);
			// 	var set = {
			// 		_id: setId,
			// 		name: '集合' + setId,
			// 		ruleList: []
			// 	};
			// 	$scope.setList.push(set);
			// 	$scope.chooseSet($scope.setList.length - 1);
			// 	setId++;
			// };
			// // 删除集合
			// $scope.removeSet = function(index) {
			// 	// console.log(index, 'remove');
			// 	$scope.setList.splice(index, 1);
			// 	if ($scope.setList.length == 0) {
			// 		$scope.addSet();
			// 	}
			// };
			// // 选择某个集合
			// $scope.chooseSet = function(index) {
			// 	$scope.setIndex = index;
			// };
			// $scope.addSet();
			// $scope.init();
			// 生成新规则的id
			// function getId(arr) {
			// 	var new_id;
			// 	var len = arr.length;
			// 	if (len == 0) {
			// 		new_id = 1;
			// 	} else {
			// 		new_id = arr[len - 1]._id + 1;
			// 	}
			// 	return new_id;
			// }
			// 通过rule id找对应的rule index
			// function findIndexById(arr, id) {
			// 	var index;
			// 	for (var i = 0; i < arr.length; i++) {
			// 		if (id == arr[i]._id) {
			// 			index = i;
			// 			break;
			// 		}
			// 	}
			// 	return index;
			// }

		}
	])
	.factory('Socket', ['$rootScope', function($rootScope) {
		// var socket = io.connect();
		// console.log('socket connect');
		return {
			connect: function(url) {
				var socket = io.connect(url);
				if (socket) {
					return socket;
				}
			},
			on: function(socket, eventName, callback) {
				socket.on(eventName, function() {
					var args = arguments;
					$rootScope.$apply(function() {
						callback.apply(socket, args);
					});
				});
			},
			emit: function(socket, eventName, data, callback) {
				socket.emit(eventName, data, function() {
					var args = arguments;
					$rootScope.$apply(function() {
						if (callback) {
							callback.apply(socket, args);
						}
					});
				})
			}
		};
	}])
